package com.fengze.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fengze.common.annotation.Excel;
import com.fengze.common.core.domain.BaseEntity;

/**
 * 合同信息对象 fz_contract_info
 *
 * @author lug
 * @date 2024-02-04
 */
public class ContractInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目成员名称 */
    private Long id;

    private String createUserName;

    /** 客户id */
    @Excel(name = "客户id")
    private Long clientId;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String clientName;

    /** 合同开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 创建用户id */
    @Excel(name = "创建用户id")
    private Long userId;

    /** 创建部门id */
    @Excel(name = "创建部门id")
    private Long deptId;

    /** 文件存放路径 */
    @Excel(name = "文件存放路径")
    private String fileUrl;

    /** 合同名称 */
    @Excel(name = "合同名称")
    private String contractName;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractCode;

    /** 项目简介 */
    @Excel(name = "项目简介")
    private String description;

    /** 项目状态 */
    @Excel(name = "项目状态")
    private Integer status;

    /** 客户联系人 */
    @Excel(name = "客户联系人")
    private String clientContacts;

    /** 客户联系人电话 */
    @Excel(name = "客户联系人电话")
    private String clientContactsPhone;

    /** 合同结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 合同性质 */
    @Excel(name = "合同性质")
    private String contractNature;

    /** 合同类别 */
    @Excel(name = "合同类别")
    private String contractType;

    /** 合同类别名称 */
    @Excel(name = "合同类别名称")
    private String contractTypeName;

    /** 签约客户代表 */
    @Excel(name = "签约客户代表")
    private String signedCustomer;

    /** 客户联系电话 */
    @Excel(name = "客户联系电话")
    private String clientPhone;

    /** 客户地址 */
    @Excel(name = "客户地址")
    private String clientAddress;

    /** 合同金额 */
    @Excel(name = "合同金额")
    private BigDecimal contractMoney;

    /** 是否含税0不含税1含税 */
    @Excel(name = "是否含税0不含税1含税")
    private Integer taxFlag;

    /** 税点 */
    @Excel(name = "税点")
    private BigDecimal taxPercentage;

    /** 关联项目id */
    @Excel(name = "关联项目id")
    private Long projectId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 询价清单id */
    @Excel(name = "询价清单id")
    private String inquiryRecordId;

    /** 询价清单名称 */
    @Excel(name = "询价清单名称")
    private String inquiryRecordName;

    /**
     * 付款总额
     */
    private BigDecimal paymentTotal;

    /**
     * 收款总额
     */
    private BigDecimal receiveTotal;

    public BigDecimal getPaymentTotal() {
        return paymentTotal;
    }

    public void setPaymentTotal(BigDecimal paymentTotal) {
        this.paymentTotal = paymentTotal;
    }

    public BigDecimal getReceiveTotal() {
        return receiveTotal;
    }

    public void setReceiveTotal(BigDecimal receiveTotal) {
        this.receiveTotal = receiveTotal;
    }

    /**
     * 文件信息列表
     */
    private List<FileInfo> fileList;

    /**
     * 删除文件id 逗号分隔的字符串
     */
    private String deleteFileIdStr;

    public String getDeleteFileIdStr() {
        return deleteFileIdStr;
    }

    public void setDeleteFileIdStr(String deleteFileIdStr) {
        this.deleteFileIdStr = deleteFileIdStr;
    }

    /**
     * 合同履行计划数组
     */
    private List<PerformancePlan> planList;

    public List<PerformancePlan> getPlanList() {
        return planList;
    }

    public void setPlanList(List<PerformancePlan> planList) {
        this.planList = planList;
    }

    public List<FileInfo> getFileList() {
        return fileList;
    }

    public void setFileList(List<FileInfo> fileList) {
        this.fileList = fileList;
    }

    /**
     * 履约计划信息的json字符串
     */
    private String jsonStr;

    public String getJsonStr() {
        return jsonStr;
    }

    public void setJsonStr(String jsonStr) {
        this.jsonStr = jsonStr;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setClientId(Long clientId)
    {
        this.clientId = clientId;
    }

    public Long getClientId()
    {
        return clientId;
    }
    public void setClientName(String clientName)
    {
        this.clientName = clientName;
    }

    public String getClientName()
    {
        return clientName;
    }
    public void setStartTime(Date startTime)
    {
        this.startTime = startTime;
    }

    public Date getStartTime()
    {
        return startTime;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }
    public void setFileUrl(String fileUrl)
    {
        this.fileUrl = fileUrl;
    }

    public String getFileUrl()
    {
        return fileUrl;
    }
    public void setContractName(String contractName)
    {
        this.contractName = contractName;
    }

    public String getContractName()
    {
        return contractName;
    }
    public void setContractCode(String contractCode)
    {
        this.contractCode = contractCode;
    }

    public String getContractCode()
    {
        return contractCode;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setClientContacts(String clientContacts)
    {
        this.clientContacts = clientContacts;
    }

    public String getClientContacts()
    {
        return clientContacts;
    }
    public void setClientContactsPhone(String clientContactsPhone)
    {
        this.clientContactsPhone = clientContactsPhone;
    }

    public String getClientContactsPhone()
    {
        return clientContactsPhone;
    }
    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }
    public void setContractNature(String contractNature)
    {
        this.contractNature = contractNature;
    }

    public String getContractNature()
    {
        return contractNature;
    }
    public void setContractType(String contractType)
    {
        this.contractType = contractType;
    }

    public String getContractType()
    {
        return contractType;
    }
    public void setContractTypeName(String contractTypeName)
    {
        this.contractTypeName = contractTypeName;
    }

    public String getContractTypeName()
    {
        return contractTypeName;
    }
    public void setSignedCustomer(String signedCustomer)
    {
        this.signedCustomer = signedCustomer;
    }

    public String getSignedCustomer()
    {
        return signedCustomer;
    }
    public void setClientPhone(String clientPhone)
    {
        this.clientPhone = clientPhone;
    }

    public String getClientPhone()
    {
        return clientPhone;
    }
    public void setClientAddress(String clientAddress)
    {
        this.clientAddress = clientAddress;
    }

    public String getClientAddress()
    {
        return clientAddress;
    }
    public void setContractMoney(BigDecimal contractMoney)
    {
        this.contractMoney = contractMoney;
    }

    public BigDecimal getContractMoney()
    {
        return contractMoney;
    }
    public void setTaxFlag(Integer taxFlag)
    {
        this.taxFlag = taxFlag;
    }

    public Integer getTaxFlag()
    {
        return taxFlag;
    }
    public void setTaxPercentage(BigDecimal taxPercentage)
    {
        this.taxPercentage = taxPercentage;
    }

    public BigDecimal getTaxPercentage()
    {
        return taxPercentage;
    }
    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId()
    {
        return projectId;
    }
    public void setProjectName(String projectName)
    {
        this.projectName = projectName;
    }

    public String getProjectName()
    {
        return projectName;
    }
    public void setInquiryRecordId(String inquiryRecordId)
    {
        this.inquiryRecordId = inquiryRecordId;
    }

    public String getInquiryRecordId()
    {
        return inquiryRecordId;
    }
    public void setInquiryRecordName(String inquiryRecordName)
    {
        this.inquiryRecordName = inquiryRecordName;
    }

    public String getInquiryRecordName()
    {
        return inquiryRecordName;
    }

    public String getCreateUserName() {
        return createUserName;
    }

    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("clientId", getClientId())
            .append("clientName", getClientName())
            .append("startTime", getStartTime())
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("createTime", getCreateTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("fileUrl", getFileUrl())
            .append("contractName", getContractName())
            .append("contractCode", getContractCode())
            .append("description", getDescription())
            .append("status", getStatus())
            .append("clientContacts", getClientContacts())
            .append("clientContactsPhone", getClientContactsPhone())
            .append("endTime", getEndTime())
            .append("contractNature", getContractNature())
            .append("contractType", getContractType())
            .append("contractTypeName", getContractTypeName())
            .append("signedCustomer", getSignedCustomer())
            .append("clientPhone", getClientPhone())
            .append("clientAddress", getClientAddress())
            .append("contractMoney", getContractMoney())
            .append("taxFlag", getTaxFlag())
            .append("taxPercentage", getTaxPercentage())
            .append("projectId", getProjectId())
            .append("projectName", getProjectName())
            .append("inquiryRecordId", getInquiryRecordId())
            .append("inquiryRecordName", getInquiryRecordName())
            .toString();
    }
}
